Voigt Form
Tensorial.frommandel
— Methodfrommandel(S::Type{<: Union{SymmetricSecondOrderTensor, SymmetricFourthOrderTensor}}, A::AbstractArray{T})
Create a tensor of type S
from Mandel form. This is equivalent to fromvoigt(S, A, offdiagscale = √2)
.
See also fromvoigt
.
Tensorial.fromvoigt
— Functionfromvoigt(S::Type{<: Union{SecondOrderTensor, FourthOrderTensor}}, A::AbstractArray{T}; [order])
fromvoigt(S::Type{<: Union{SymmetricSecondOrderTensor, SymmetricFourthOrderTensor}}, A::AbstractArray{T}; [order, offdiagscale])
Converts an array A
stored in Voigt format to a Tensor of type S
.
Keyword arguments:
offdiagscale
: Determines the scaling factor for the offdiagonal elements.order
: A vector of cartesian indices (Tuple{Int, Int}
) determining the Voigt order. The default order is[(1,1), (2,2), (3,3), (2,3), (1,3), (1,2), (3,2), (3,1), (2,1)]
fordim=3
.
Since offdiagscale
is the scaling factor for the offdiagonal elements in Voigt form, they are multiplied by 1/offdiagscale
in fromvoigt
unlike tovoigt
. Thus fromvoigt(tovoigt(x, offdiagscale = 2), offdiagscale = 2)
returns original x
.
See also tovoigt
.
Examples
julia> fromvoigt(Mat{3,3}, 1.0:1.0:9.0)
3×3 Tensor{Tuple{3, 3}, Float64, 2, 9}:
1.0 6.0 5.0
9.0 2.0 4.0
8.0 7.0 3.0
julia> fromvoigt(SymmetricSecondOrderTensor{3},
1.0:1.0:6.0,
offdiagscale = 2.0,
order = [(1,1), (2,2), (3,3), (1,2), (1,3), (2,3)])
3×3 SymmetricSecondOrderTensor{3, Float64, 6}:
1.0 2.0 2.5
2.0 2.0 3.0
2.5 3.0 3.0
Tensorial.tomandel
— Methodtomandel(A::Union{SymmetricSecondOrderTensor, SymmetricFourthOrderTensor})
Convert a tensor to Mandel form which is equivalent to tovoigt(A, offdiagscale = √2)
.
See also tovoigt
.
Tensorial.tovoigt
— Functiontovoigt(A::Union{SecondOrderTensor, FourthOrderTensor}; [order])
tovoigt(A::Union{SymmetricSecondOrderTensor, SymmetricFourthOrderTensor}; [order, offdiagonal])
Convert a tensor to Voigt form.
Keyword arguments:
offdiagscale
: Determines the scaling factor for the offdiagonal elements.order
: A vector of cartesian indices (Tuple{Int, Int}
) determining the Voigt order. The default order is[(1,1), (2,2), (3,3), (2,3), (1,3), (1,2), (3,2), (3,1), (2,1)]
fordim=3
.
See also fromvoigt
.
Examples
julia> x = Mat{3,3}(1:9...)
3×3 Tensor{Tuple{3, 3}, Int64, 2, 9}:
1 4 7
2 5 8
3 6 9
julia> tovoigt(x)
9-element StaticArraysCore.SVector{9, Int64} with indices SOneTo(9):
1
5
9
8
7
4
6
3
2
julia> x = SymmetricSecondOrderTensor{3}(1:6...)
3×3 SymmetricSecondOrderTensor{3, Int64, 6}:
1 2 3
2 4 5
3 5 6
julia> tovoigt(x; offdiagscale = 2,
order = [(1,1), (2,2), (3,3), (1,2), (1,3), (2,3)])
6-element StaticArraysCore.SVector{6, Int64} with indices SOneTo(6):
1
4
6
4
6
10